<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /* 
            需求：将数组的所有元素进行累加
         */
        const array1 = [1,2,3,4,5];
        // 方式一
        let sum = 0;
        for(let val of array1){
            sum += val;
        }
        console.log(sum);//15
        console.log("===============");

        // 方式二
        /* 
            previuesValue:上一次执行的结果
            currentValue：每次循环的item
            一般情况下：给变量命名要有意义
            */
        const result1 = array1.reduce((previuesValue,currentValue) => previuesValue + currentValue);
        console.log(result1);
        console.log("===============");

        /* 
            如果执行了initialValue，那么在计算的时候就把initialValue赋值给previouesValue,然后把数组的第一个参数赋值给currentValue
            如果没有指定就把数组的第一个参数赋值给previouesValue,第二个参数赋值给currentValue
         */
        const initialValue = 100;
        let result = array1.reduce(
            (previouesValue,currentValue) => previouesValue + currentValue,
            initialValue
        );
        console.log(result);
        console.log("===============");

        //定义一个函数
        /* 
            左边是函数名称，右边是函数体
         */
        const getMax = (a,b) => Math.max(a,b);
        console.log([100,200].reduce(getMax,250));
        console.log("===============");

        function myReduce(previous , current , index , array) {
            const results = previous + current;
            console.log("previous：" + previous + ", current：" + current + " index：" + index + " array：" + array);
            return results;
        }

        // 这里的index是cur的index
        const array2 = [1,2,3,4,5];
        array2.reduce(myReduce);
    </script>
</head>
<body>
    
</body>
</html>